package bank;

import java.io.IOException;
import java.rmi.RemoteException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import common.BankException;

import beans.OverboekenBean;
import beans.PageBean;

public class Overboeken extends HttpServlet
{
	private static final long serialVersionUID =0L;	
	public void init()
	{
		this.print("Overboeken.init()");
	}
	public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException
	{
		this.print("doGet()");
		UberClass u = new UberClass(req,resp, UberClass.KLANT);
		PageBean pb = new PageBean("klant/Overboeken.jsp");
		req.setAttribute("page",pb); 
		u.startOutput();
	}	
	public void print(String text)
	{
		System.out.println(text);
	}
	
	public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException
	{
		this.print("doPost()");
		OverboekenBean ob=new OverboekenBean();
		UberClass u=new UberClass(req,resp);
		
		overBoeken(u,req,ob);
		
		PageBean pb = new PageBean("klant/Overboeken.jsp");
		pb.put( "includeSubPage", "yes" );
		pb.put( "subPage", "Overboeken.jsp" );
		req.setAttribute("page", pb);
		req.setAttribute("ob", ob);
		u.startOutput();
	}
	public void overBoeken(UberClass u,HttpServletRequest req, OverboekenBean ob)
	{
		boolean validAccount = false;
		String destAccount=req.getParameter("toRekNr");
		try
		{
			validAccount = true;
		}
		catch(NumberFormatException nfe)
		{
			u.error("Een rekeningnummer bestaat alleen uit cijfers.");
			validAccount=false;
		}
		String bedrag=req.getParameter("bedrag");
		try
		{
			if(validAccount)
			{
				if(bedrag.length()!=0)
				{
					if(destAccount.length()!=0)
					{
						double doubleBedrag=0.0;
						doubleBedrag=Double.parseDouble(bedrag);
						ob.put("toRekNr", destAccount);
						u.getOffice().transfer(destAccount, doubleBedrag);
						u.error("Overboeking geslaagd.");
					}
					else
					{
						u.error("Er moet een rekeningnummer ingevoerd worden");
					}
				}
				else
				{
					u.error("Er moet een bedrag ingevoerd worden");
				}
			}
		}
		catch(BankException aoe)
		{
			u.error(aoe.getMessage());
		}
		catch(NumberFormatException nfe)
		{
			u.error("Voer een correct bedrag in. Voorbeeld: 5.6");	
		}
		ob.populate(req);
		ob.setRekeningNrTo(destAccount);
		ob.put( "includeSubPage", "yes" );
		ob.put( "subPage", "overboeken.jsp" );
	}
}